function getCookie(name) {
    var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
    return r ? r[1] : undefined;
}


$(function(){

    // 打开登录框
    $(".comment_form_logout").click(function () {
        $(".login_form_con").show();
    });

    // 收藏
    $(".collection").click(function () {
        var news_id = $(".collection").attr("data-newid");
        var action = "collect";

        var params = {
            "news_id": news_id,
            "action": action
        };

        $.ajax({
            url: "/news/news_collect",
            type: "post",
            contentType: "application/json",
            headers: {
                "X-CSRFToken": getCookie("csrf_token")
            },
            data: JSON.stringify(params),
            success: function (resp) {
                if (resp.errno == "0") {
                    $(".collection").hide();
                    $(".collected").show();
                }else if (resp.errno == "4101"){
                    $(".login_form_con").show();
                }else {
                    alert(resp.errmsg);
                }
            }
        })
    });

    // 取消收藏
    $(".collected").click(function () {
        var news_id = $(".collected").attr("data-newid");
        var action = "cancel_collect";

        var params = {
            "news_id": news_id,
            "action": action
        };

        $.ajax({
            url: "/news/news_collect",
            type: "post",
            contentType: "application/json",
            headers: {
                "X-CSRFToken": getCookie("csrf_token")
            },
            data: JSON.stringify(params),
            success: function (resp) {
                if (resp.errno == "0"){
                    $(".collection").show();
                    $(".collected").hide();
                }else if (resp.errno == "4101"){
                    $(".login_form_con").show();
                }else {
                    alert(resp.errmsg);
                }
            }
        })
    });

    // 评论提交
    $(".comment_form").submit(function (e) {
        e.preventDefault();
        var news_id = $(this).attr("data-newsid");
        var news_comment = $(".comment_input").val();
        if (!news_comment){
            alert("请输入评论内容");
            return
        }

        var params = {
            "news_id": news_id,
            "comment": news_comment
        };

        $.ajax({
            url: "/news/news_comment",
            type: "post",
            contentType: "application/json",
            headers: {
                "X-CSRFToken": getCookie("csrf_token")
            },
            data: JSON.stringify(params),
            success: function (resp) {
                if (resp.errno == "0"){
                    var comment = resp.data;
                    var comment_html = '';
                    comment_html += '<div class="comment_list">';
                    comment_html += '<div class="person_pic fl">';
                    if (comment.user.avatar_url){
                        comment_html += '<img src="' + comment.user.avatar_url + '" alt="用户图标">';
                    }else{
                        comment_html += '<img src="../../static/news/images/person01.png" alt="用户图标">';
                    }
                    comment_html += '</div>';
                    comment_html += '<div class="user_name fl">' + comment.user.nick_name + '</div>';
                    comment_html += '<div class="comment_text fl">';
                    comment_html += comment.content;
                    comment_html += '</div>';
                    comment_html += '<div class="comment_time fl">' + comment.create_time + '</div>';
                    comment_html += '<a href="javascript:;" class="comment_up fr" data-commentid="' + comment.id + '" data-newsid="' + comment.news_id + '">赞</a>';
                    comment_html += '<a href="javascript:;" class="comment_reply fr">回复</a>';
                    comment_html += '<a href="javascript:;" class="comment_delete fr" data-commentid="' + comment.id + '">删除</a>'
                    comment_html += '<form class="reply_form fl" data-commentid="' + comment.id + '" data-newsid="' + news_id + '">';
                    comment_html += '<textarea class="reply_input"></textarea>';
                    comment_html += '<input type="button" value="回复" class="reply_sub fr">';
                    comment_html += '<input type="reset" name="" value="取消" class="reply_cancel fr">';
                    comment_html += '</form>';
                    comment_html += '</div>';
                    $(".comment_list_con").prepend(comment_html);

                    $(".comment_sub").blur();

                    $(".comment_input").val("");

                    updateCommentCount()
                }else if (resp.errno == "4101"){
                    $(".login_form_con").show();
                }else {
                    alert(resp.errmsg)
                }
            }
        })
    });

    $(".comment_list_con").delegate("a,input","click",function(){

        var sHandler = $(this).prop("class");

        if(sHandler.indexOf("comment_reply")>=0)
        {
            $(this).next().next().toggle();
        }

        if(sHandler.indexOf("reply_cancel")>=0)
        {
            $(this).parent().toggle();
        }
        // 前端逻辑实现 , 实现点赞逻辑
        if(sHandler.indexOf("comment_up")>=0)
        {
            var $this = $(this);
            var action = "add";
            if(sHandler.indexOf("has_comment_up")>=0)
            {
                // 如果当前该评论已经是点赞状态，再次点击会进行到此代码块内，代表要取消点赞
                $this.removeClass("has_comment_up");
                action = "remove"
            }else {
                $this.addClass("has_comment_up")
            }

            var comment_id = $this.attr("data-commentid");
            var news_id = $this.attr("data-newsid");
            var params = {
                "comment_id": comment_id,
                "action": action,
                "news_id": news_id
            };

            $.ajax({
                url: "/news/comment_like",
                type: "post",
                contentType: "application/json",
                headers: { "X-CSRFToken": getCookie("csrf_token")},
                data: JSON.stringify(params),
                success: function (resp) {
                    if (resp.errno == "0"){
                        var like_count = $this.attr("data-likecount");

                        if (like_count == undefined) {
                            like_count = 0
                        }

                        if (action == "add") {
                            $this.addClass("has_comment_up");
                            like_count = parseInt(like_count) + 1
                        }else {
                            $this.removeClass("has_comment_up");
                            like_count = parseInt(like_count) - 1
                        }

                        $this.attr("data-likecount", like_count);

                        if (like_count == 0) {
                            $this.html("赞")
                        }else {
                            $this.html(like_count)
                        }

                    }else if (resp.errno == "4101"){
                        $(".login_form_con").show();
                    }else {
                        alert(resp.errmsg)
                    }
                }
            })
        }

        // 前端逻辑实现 , 实现删评逻辑
        if(sHandler.indexOf("comment_delete")>=0)
        {
            var $this = $(this);
            var action = "add";
            var comment_id = $this.attr("data-commentid");
            var params = {
                "comment_id": comment_id,
            };

            $.ajax({
                url: "/news/comment_delete",
                type: "post",
                contentType: "application/json",
                headers: { "X-CSRFToken": getCookie("csrf_token")},
                data: JSON.stringify(params),
                success: function (resp) {
                    if (resp.errno == "0"){
                        // 刷新页面
                        location.reload();
                    }else if (resp.errno == "4101"){
                        $(".login_form_con").show();
                    }else {
                        alert(resp.errmsg)
                    }
                }
            })
        }

        if(sHandler.indexOf("reply_sub")>=0)
        {
            var $this = $(this);
            var news_id = $this.parent().attr("data-newsid");
            var parent_id = $this.parent().attr("data-commentid");
            var comment = $this.prev().val();

            if (!comment) {
                alert("请输入评论内容")
            }

            var params = {
                "news_id": news_id,
                "comment": comment,
                "parent_id": parent_id
            }

            $.ajax({
                url: "/news/news_comment",
                type: "post",
                contentType: "application/json",
                headers: {"X-CSRFToken": getCookie("csrf_token")},
                data: JSON.stringify(params),
                success: function (resp) {
                    if (resp.errno == "0"){
                        var comment = resp.data;
                        var comment_html = "";
                        comment_html += '<div class="comment_list">';
                        comment_html += '<div class="person_pic fl">';
                        if (comment.user.avatar_url) {
                            comment_html += '<img src="' + comment.user.avatar_url + '" alt="用户图标">'
                        }else {
                            comment_html += '<img src="../../static/news/images/person01.png" alt="用户图标">'
                        }
                        comment_html += '</div>';
                        comment_html += '<div class="user_name fl">' + comment.user.nick_name + '</div>';
                        comment_html += '<div class="comment_text fl">';
                        comment_html += comment.content;
                        comment_html += '</div>';
                        // 父评论部分
                        comment_html += '<div class="reply_text_con fl">';
                        comment_html += '<div class="user_name2">' + comment.parent.user.nick_name + '</div>';
                        comment_html += '<div class="reply_text">';
                        comment_html += comment.parent.content;
                        comment_html += '</div>';
                        comment_html += '</div>';
                        // 父评结束
                        comment_html += '<div class="comment_time fl">' + comment.create_time + '</div>';
                        comment_html += '<a href="javascript:;" class="comment_up fr" data-commentid="' + comment.id + '" data-newsid="' + comment.news_id + '">赞</a>';
                        comment_html += '<a href="javascript:;" class="comment_reply fr">回复</a>';
                        comment_html += '<a href="javascript:;" class="comment_delete fr" data-commentid="' + comment.id + '">删除</a>';
                        comment_html += '<form class="reply_form fl" data-commentid="' + comment.id + '" data-newsid="' + news_id + '">';
                        comment_html += '<textarea class="reply_input"></textarea>';
                        comment_html += '<input type="button" value="回复" class="reply_sub fr">';
                        comment_html += '<input type="reset" name="" value="取消" class="reply_cancel fr">';
                        comment_html += '</form>';
                        comment_html += '</div>';
                        $(".comment_list_con").prepend(comment_html)
                        $this.prev().val("")
                        $this.parent().hide()
                        updateCommentCount()
                    }else if (resp.errno == "4101"){
                        $(".login_form_con").show();
                    }else {
                        alert(resp.errmsg)
                    }
                }
            })
        }
    });

    // 关注当前新闻作者
    $(".focus").click(function () {
        var user_id = $(this).attr("data-userid");
        var params = {
            "action": "follow",
            "user_id": user_id
        }

        $.ajax({
            url: "/news/followed_user",
            type: "post",
            contentType: "application/json",
            headers: {"X-CSRFToken": getCookie("csrf_token")},
            data: JSON.stringify(params),
            success: function (resp) {
                if (resp.errno == "0") {
                    var count = parseInt($(".follows b").html());
                    count++;
                    $(".follows b").html(count + "");
                    $(".focus").hide();
                    $(".focused").show();
                }else if (resp.errno == "4101"){
                    $(".login_form_con").show();
                }else {
                    alert(resp.errmsg)
                }
            }
        })
    });

    // 取消关注当前新闻作者
    $(".focused").click(function () {
        var user_id = $(this).attr("data-userid");
        var params = {
            "action": "unfollow",
            "user_id": user_id
        };

        $.ajax({
            url: "/news/followed_user",
            type: "post",
            contentType: "application/json",
            headers: {"X-CSRFToken": getCookie("csrf_token")},
            data: JSON.stringify(params),
            success: function (resp) {
                if (resp.errno == "0") {
                    var count = parseInt($(".follows b").html());
                    count--;
                    $(".follows b").html(count + "");
                    $(".focus").show();
                    $(".focused").hide();
                }else if (resp.errno == "4101"){
                    $(".login_form_con").show();
                }else {
                    alert(resp.errmsg)
                }
            }
        })
    })
});
//更新评论总数量
function updateCommentCount() {
    var count = $(".comment_list").length;
    $(".comment_count").html(count + "条评论")
}